$(function () {
  var vConsole = new VConsole();
  init();
});

function init() {
  console.log('ready');
  let code = getUrlParam('code');
  if (code) {
    // 授权后取用户信息
    http('/getData', 'GET', { code }, function (res) {
      console.log(res);
    });
  }
  // init jssdk
  http('/wechat/getTicket', 'GET', {}, function (res) {
    let { data } = res;
    console.log(data);
    wx.config({
      debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
      appId: 'wx564a7568465e10cb', // 必填，公众号的唯一标识
      timestamp: data.timestamp, // 必填，生成签名的时间戳
      nonceStr: data.noncestr, // 必填，生成签名的随机串
      signature: data.signature, // 必填，签名
      jsApiList: ['openLocation', 'getLocation'], // 必填，需要使用的JS接口列表
    });
  });
}

wx.ready(function () {
  // config信息验证后会执行ready方法，所有接口调用都必须在config接口获得结果之后，config是一个客户端的异步操作，所以如果需要在页面加载时就调用相关接口，则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口，则可以直接调用，不需要放在ready函数中。
  $('#msg').text('jssdk初始化成功！');
  getLocation();
});

function getLocation() {
  wx.getLocation({
    type: 'gcj02', // 默认为wgs84的gps坐标，如果要返回直接给openLocation用的火星坐标，可传入'gcj02'
    success: function (res) {
      var latitude = res.latitude; // 纬度，浮点数，范围为90 ~ -90
      var longitude = res.longitude; // 经度，浮点数，范围为180 ~ -180。
      var speed = res.speed; // 速度，以米/每秒计
      var accuracy = res.accuracy; // 位置精度
      console.log(latitude, longitude, speed, accuracy);
    },
  });
}

function toWechatAuth() {
  let appId = 'wx564a7568465e10cb';
  // 你设置的授权回调页面域名
  let pageUrl = encodeURIComponent('http://127.0.0.1/');
  let url = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appId}&redirect_uri=${pageUrl}&response_type=code&scope=snsapi_userinfo&state=6#wechat_redirect`;
  console.log(url);
  location.href = url;
}

function http(url, type = 'GET', data, callback) {
  $.ajax({
    type,
    url,
    data,
    dataType: 'json',
    success: function (data) {
      callback(data);
    },
    error: function (xhr, type) {
      $('#res').text('Ajax error!');
    },
  });
}

function getUrlParam(paraName) {
  var url = document.location.toString();
  var arrObj = url.split('?');
  if (arrObj.length > 1) {
    var arrPara = arrObj[1].split('&');
    var arr;
    for (var i = 0; i < arrPara.length; i++) {
      arr = arrPara[i].split('=');
      if (arr != null && arr[0] == paraName) {
        return arr[1];
      }
    }
    return '';
  } else {
    return '';
  }
}
